#ifndef ETHERNET_H
#define ETHERNET_H

#include "CommunicationInterface.h"
#include <QTcpSocket>

/**
 * @brief 以太网通信模块实现类
 * @details 继承自CommunicationInterface，提供TCP客户端连接、数据发送等功能
 */
class Ethernet : public CommunicationInterface {
    Q_OBJECT
public:
    /**
     * @brief 构造函数
     * @param parent 父对象指针（默认nullptr）
     */
    explicit Ethernet(QObject *parent = nullptr);

    /**
     * @brief 初始化以太网通信（基类接口实现）
     * @param params 配置参数QVariantMap，包含以下键值对：
     *        - "ipAddress": QString IP地址（如"192.168.1.100"）
     *        - "port": int 端口号（如8080）
     * @return 初始化成功返回true，否则返回false
     */
    bool initialize(const QVariantMap &params) override;

    /**
     * @brief 反初始化并断开连接
     */
    void uninitialize() override;

    /**
     * @brief 发送数据到以太网服务器
     * @param data 待发送的字节数据
     * @return 发送成功返回true，失败返回false
     */
    bool sendData(const QByteArray &data) override;

    /**
     * @brief 获取通信类型
     * @return 字符串"Ethernet"
     */
    QString type() const override;

    /**
     * @brief 获取当前状态
     * @return 状态描述字符串（如"connected"/"disconnected"）
     */
    QString status() const override;

private:
    QTcpSocket *m_tcpSocket = nullptr;
    QString m_currentStatus;
};

#endif // ETHERNET_H
